Хз с чем связано, замечал такое при реплесе героя - если меню изучение способностей открыто, то оно открыто у вновь созданного героя, нужно убрать выбор у игрока и добавить выбор на героя снова.
bladget, скорее всего (если у тебя Vista или W7 стоит), в старой папки остались "файлы совместимости", которые не удаляются просто так. В WoO много всякого мусора было...
Кажется проблему решили, ответ крылся в текстурах, скорее всего в типе сжатия Sequental JPEG при пресохранени с другим типом сжатия (Пересохранил текстуры в тга и обратно в блп) - проблема решилась (По крайней мере сейчас так кажется).
Из чего могу предположить, то при определенных обстоятельства Варик или система неадекватно воспринимает текстуры с этим типом сжатия и выпадает
Была прям один в один ситуация. Игра крашица скорее всего от того, что что bounds выходит за пределы карты. Оставляй отступ от краев.
и даже не границы карты, а границы обзора вродебы ломают все
попробуй rect создать на карте, чтобы он был внутри границы обзора. И bounds выставляй по нему.
Вроде работает, но не знаю, так ли у тебя работало ранее. Проверь. Касательно проблем с триггерами не уверен, но вроде бы видел триггеры с одинаковым названием на русском. На всякий случай изменил все названия триггеров с кириллицей на латиницу, так как проблемы с этим уже упоминали. В триггере инициализации было два события, что в итоге приводило бы к двойному срабатыванию, одно из них удалил. Также удалил несколько ретурнов, чтобы с одной стороны увидеть работоспособность триггеров, так удалил ретурн перед постановкой заданий в инициализации, с другой сомневался, что они корректно работают, а проверять было некогда, например, в цикле от 1 до 350 ретурн мог не пустить выполнение цикла дальше первого элемента. Но главное в том, что ты вводишь лишнии глобальные переменные вместо указателей (Triggering unit) или (Item being manipulated), причём их порой даже не используешь, просто устанавливаешь сначала, а в конце обнуляешь. Так не надо делать, пользуйся стандартными указателями на юнитов, типа (Triggering unit) или (Attacking unit), не удаляя или обнуляя их, а то только лишнюю нагрузку создаёшь для памяти, процессора и очереди операций. Обычно (Triggering player) по умолчанию является владельцем (Triggering unit), тоже используй сразу, а не плоди переменные. После удаления точки, не обнуляй её. А ещё попробуйте использовать какие-то оптимизаторы для карты, потому что её загрузка просто жесть - более 50 тысяч переменных для объектов редактор показывал) Только после оптимизации карта будет годна лишь для игры, а в редакторе не будет открываться.
Печатал уточнение и заснул)
Не указал, что вроде бы видел два триггера Безымянный триггер 002 или Безымянный триггер 005, одинаковые имена как раз могли быть причиной проблемы.
Собственные попытки в студию, что не получается?
Напомним - ЭТО НЕ СТОЛ ЗАКАЗОВ, здесь задают вопросы про реализацию тех или иных вопросов, спрашивают про ошибки, оптмизацию, отдельные функции. Я не увидел в вашем вопросе ничего кроме невнятного описания механики способности, " вокргу кого то там огненные столбы возникают, и еще порча"...
Filius Dei, во вредные советы подъехали...
Русификатор очень поможет тем кто собрался ломануть чужую карту и сделать её мод, прям ваще жир...
Потом нубам вроде сударя не стоит бежать ломать чужую карту, чето там пытатся копировать - это все бесполезно, недавно был похожий вопрос - помогите взломать карту за вознаграждение, карту сломали - ну а дальше что? Он неспособен ничего сделать потому что просто не понимает как?
Играя в некую карту вы мните себя великими балансерами и картоделами, мол да чё там, шяс подправлю пару значений и все будет норм - нет не будет, это не так просто как может показаться, без понимания устройства карты и знания Jass вам нечего там делать, вы тупо ничего не сможете изменить, да даже скопировать и вставить!
Помните что без труда не выловишь и рыбку из пруда, т.е изи способов в 1 кнопку взять и запилить чужую карту так как вам хочется или вдруг стащить всех героев себе в карту нет, а уж теболее не случится так что вам кто то возьмет и все это сделает вам за спасибо...
Pingvinromeo, проблема в том что ты фигню творишь
если спел применён в точку то точка есть
перемещение это 1 действие
за это время точка не исчезнет
короче пруфы того что не работает
есть специальная функция на jass, которая называется MoveRect() или SetRect(). С помощью этих функций и перемещаете.
native MoveRectTo takes rect whichRect, real newCenterX, real newCenterY returns nothing
native SetRect takes rect whichRect, real minx, real miny, real maxx, real maxy returns nothing
Например, есть направленный скилл - молоток горного короля, я заставляю триггерно нажать на способность и мне нужно через триггеры направить её на вражеского юнита (юнит уже лежит в специальной переменной)
Не нужно триггерно нажимать на способность, есть специальное действие для этого.
Действие Боевая единица - Issue order targeting on unit, там указываешь юнита со способностью, вражеского юнита в переменной и из списка приказов выбираешь способность Альянс (Горный Король) - Молот бурь. Если способность нестандартная, то указываешь в списке способность, на основе которой нестандартная сделана.
Ищи в редакторе объектов "пиктограмма на мини-карте" (или "нейтральное здание - значок на мини-карте") - это в редакторе войск.
Саму пиктограмму можно найти в игровом интерфейсе.
Это не скрывает надпись, но позволит добавить пиктограмму любому зданию. Прикрепил бы скрины, но редактора поблизости нет.
Если у юнита есть способность рудника, то иконку не скрыть через РО. Есть функция альтернативной иконки на мини-карте. Она может быть только одна в карте. Импортируешь иконку с альфа-каналом (прозрачную):
SetAltMinimapIcon("war3mapImported\\InvisibleIcon.blp") -- .dds не видит
UnitSetUsesAltIcon(unit, true) -- принимает только созданного на карте юнита, не айди юнита из РО
-- всех юнитов можно перебрать через счетчик, например
Есть еще несколько баг репортов от игроков на форуме близзов о том, что этот параметр в РО не работает на версиях 1.32+:
Есть команда, которая задает границы карты, а также изменяет и размер отображения мини-карты
SetCameraBounds
Можно попробовать через GetLocalPlayer задать, но не знаю, будет ли десинк.
Или попробовать скрыть миникарту другим способом, только наверняка это будет на всех. поискать надо на хгм
если можно было бы достать рисунок мини карты - war3mapmap.blp. Обычно чтобы затемнить, то отключить просто импортируют рисунок с альфо-прозрачностью. Но это постоянные изменения, то есть оно будет у всех, чтобы динамично - я думаю, никак.
Попробуй ещё оставить крипов Нейтрально-враждебными или поставить под контроль назначенного игрока и триггерно в категории действий ИИ убрать у них контроль ИИ.
Вот тут Steal nerves кое-что потестировал:
делаешь области примерно x1 на y1 (точка) у каждой декорации, когда приходишь фиксируешь эти точки через set = (центр точки декорации), после функция, которая добавляет БЕ (боевая единица), без русификатора функция "create" и по одной БЕ на каждую точку с ориентировкой на того кто входит в область (так же фиксируй позицию БЕ, которая входит в область), и после всего этого удаляй точки, которые зафиксированы на декор и на БЕ, которая вошла в область.
можно добавит ещё эффект появления на каждой точке у декора, будет красиво)
Там и защиты то никакой нету, деоптимизатором прошёлся да и все, код редактируешь одтельно и вставляешь в уже подготовленную карту.
Вот опен карта, там все изи...
Решено. Удивительно, но карта открывается в новой версии редактора на патче 1.31. Сохранил в новом патче, воспользовался конвертером и все работает... Странно. Могу ли я что-то сломать таким способом?
Проблема и правда была в каменных подьемах, которые я пытался заменить. После их удаления на новом патче и конвертирование в 1.26 - все работает. Можно ли как-то удалять декорацию не открывая карту.
Проблема была в том, что каменному подъему был задан нестандартный цвет на миникарте.
Я не спец, и не уверен, но тут точно jassgenpack замешан, работаете ли вы в том же редакторе, и не меняли, ли вы какие нибудь настройки? А вообще, согласен с quq_CCCP
Рассмотрим на примере модельки простого огра, у него есть анимация атаки slam и удар дубиной по земле
Старт атаки
Создаём упреждающий в области впереди героя (маркер, ну эффект ауры например), чтобы игрокам было понятно что скоро тут что-то произойдёт
Проигрываем анимацию "attack slam" или нужную другую, для замаха дубиной, если надо больше и не хватает стандартной скосроти, замедляем скорость анимации
Визуально подгадываем или упытным путём определяем время касания дубиной полна от 1 до 4 сек, на ваше усмотрение
Запускаем новый разовый таймер с нужным периодом, и как таймер сработает, создаём спец эффект, и наносим урон юнитам в области эффекта
(это самый простейший способ, хоть на гуи можно сделать)
Проверка на наличие предмета, которая даёт ответ "да/нет", сделана за через цикл, который проверяет слоты юнита и даёт нужный ответ.
Функция, которая возвращала бы количество предметов одного типа, выглядела бы точно так же, но с небольшим изменением...
В идеале должна быть BJ-функция которая считает число предметов, а та которая проверяет есть ли он вообще - должна была бы проверять вернётся ли предыдущая функция число больше 0, или нет... Но увы, так не сделали. Поэтому надо делать всё самому.
. . .
Проходишься циклом по слотам и считаешь предметы нужного типа, если это число больше или равно нужному тебе - то... ок ок
Получает нужный предмет, фиксируем через переменную целогику/реал (разницы нет) значение +1. Таким образом если переменная будет ровняться к примеру 2, выдаем функцию и обнуляем переменную.
В чем проблема написать функцию подсчета итемов по их Id (циклом делается), а уже там делать условие. Не знаю уровень автора, поэтому напишу псевдокодом
Если КоличествоПредметов(u,'I000') >= 2 Тогда
УдалитьИтем(u,'I000')
УдалитьИтем(u,'I000')
ДатьИтемЮниту(u,'I001')
КонецЕсли
bigwolf2000, Чувак, тебе никто не скажет в чем дисинх даже если у него будет весь код перед глазами.
Нужно делать дебаги и играть с тестерами, чтобы отловить десинх.
Опен версию карту в студию если хотите помощи, все экстрасенсы не вышли из новогоднего отпуска...
Карту могу скинуть, но сюда или в лс?) Steal nerves:
на данный момент ничего неизвестно, поэтому могут посоветовать читать статью дока про десинк
есть логгер xgm.guru/p/wc3/95728
и нужно знать jass
"Недостаточно ресурсов памяти для обработки этой команды", получал такое когда вынуждал варик скушать больше гигабайта оперативки, но это завист от карты, в момент краша посмотри в диспетчере задач сколько war3.exe кушает
PyCCKuu_4eJl, вот только это проделывал десятки раз. Карта в кампании, доставал из кампании и сохранял отдельно. С импортом игрался.
Не помогло.
Разобраться до конца не смог, пока выводы такие, что несмотря на замену текстуры дереву Нортренда, для модели пеньков этих деревьев используется стандартная текстура. Потому пеньки следует менять на пеньки тех деревьев, текстуру которых ставил деревьям Нортренда. Можно попробовать сделать замену для порченных деревьев на основе других стандартных деревьев, которым поставить порченную текстуру под стандартным для них именем. Правда, это всё опробовал на тестовой карте, а не той, в которой это нужно, может там ещё какие проблемы притаились.
Наверное, нашёл причину. В РО у деревьев указан Заменяемый идентификатор текстур, ему и следовало поставить идентификатор текстур, заменяемых импортом.
P. S. Как бы не так пока))
Всё зависит от мелочей... если ты хочешь запаузить всех кто в данный момент находится на карте - это одно, если вообще ВСЕХ и ВСЁ - это другое...
Стомп застанит только тех, по кому попадёт... те кто появятся после - не будут застанены
Молотбурь застанит только тех, кого укажешь... кого не укажешь - не будут застанены
Пауза работать будет так же как молот, но так паузить баффы и прочее...
Можно собрать стан, который будет станить на 0.00 сек (вечно), а далее его снимать вручную... но тут надо учесть то что все станы должны будут это учитывать (или быть такими же - время таймерное).
. . .
По факту, когда я планировал перевести баффы на триггерную основу (тайминг), пришёл к выводу что мои баффы "обездвиживание" (сетка), "безмолвие" (сало), "обезоруживание" (дизарм - склад) и дополнительный бафф на "сковывание" (скорость поворота на 0), давали в сумме следующее:
нельзя двигаться и поворачиваться
нельзя кастовать
нельзя атаковать
В итоге это практически тот же стан... но с набором баффов в статусе (сетка и сало минимум)
Есть одна наработка - Dota helper, это dll которая подключается мемхаком к карте, дает много чего (в основном для доты), но там есть дабл клик, который реализован так: когда игрок нажал способность и пытается её кликнуть в область инетфейса, код из библиотеки мгновенно переносят курсор в позицию портрета, так как определение координат виджетов на экране уже есть, думаю автонаведение сделать вполне можно.
Но это уже C++ и поддержки нету, думайте и решайте все сами.
Да там просто текстуры на прозрачный фон заменили.
В карте я могу так сделать:
Для этого нужно в главном окне редактора нажать "Дополнительно" - "Игровой интерфейс", и искать там нужные текстуры. При нахождении заменить на импортированную прозрачную текстуру. Я для примера несколько нашёл:
Вот карта, если что-то непонятно. Я импортировал прозрачную текстуру большого размера (скачанную из местной статьи про альфа-тайлы), но лучше вообще один пиксель использовать для экономии места.
Если такой интерфейс нужен не в одной карте, а во всей игре, то, предполагаю, это надо менять файлы в MPQ-архивах (пути к файлам видно в игровом интерфейсе на скрине выше) или создавать свой патч.
это не в карте дело а в самой теме, я специально проверял на точно такой же версии как и в источнике ( в источнике не было темы )
Сам задал, сам ответил.
call BlzFrameSetParent выручает ситуацию, т.е. устанавливаешь предка, который не скрыт(любой созданный через blzCreateFrame, и к нему вешаешь.
Только редачить положение стандартных, чтобы создавать свои элементы нужен либо клиент Renderedge либо у ребят приближенных к Личу (Караулов и Анрайз), по факту есть библиотека dll позволяющая отрисовывать фреймы. но её в живую так и не видел. Это глубокие дебри чтобы туда влазить.
Пассивные способности позволяют аттачить спецэффекты. Вместо триггерного создания этого эффекта, быть может, достаточно дать абилку предмету, которая даст такой спецэффект? Если не ошибаюсь эффект таким образом может дать любая пассивная способность(во всяком случае точно дают Сфера(способность мага без коня у людей) и способности повышения характеристик предмета(в т.ч. защиты и атаки)) где что прописывать посмотрите в способности Сфера.
у парня проблемы с алгоритмом, в какой вселенной 0.01 * 10 не 0.1?
В компьютерной. И да, 0.01 * 10 тоже может быть не равно 0.01 + ... + 0.01. Потому что складываются и умножаются real по-разному. Hate, надо просто использовать целочисленные, или пользоваться ==, в JASS == округляет числа для сравнения (!= не округляет).
Пороверил разные варианты, сразу упомяну, что с целочисленными всё огонь, просто какие-то другие воспоминания с ними всплывали. PT153, сначала не понял, зачем мне твоя строчка, она всего лишь выдавала 0.1 вместо 0.100, но тестировал разные варианты и всё прояснилось. Если задавать шаг 1.0, то всё исправно считается до 10.0, если задавать шаг 0.2, то всё считается до 2.2 и отображается ровно, но если сделать шаг 1.01, то вот тут и появляется то, ради чего ты эту строчку дал.
Именно с дробной частью косяк, и теперь не знаю как выбрать лучший ответ, по идее у тебя в каждом комментарии полезная информация. Просто объединил их в итоге.
Периодическое событие
Условия там всякие
Боевая единица отдать приказ (точка) - Двигаться в (позиция юнита со смещением на 100-200 с (поворотом боевой единицы) градусов)
По памяти написал
А если имелось в виду толкать юнита то тригерно двигаем в точку с полярным смещением принцип тот же.
В способности "Канала" измените id на другой спелл, допустим "holybolt", и потом триггерно заставте использовать этот спелл. Старайтесь дать id спелла, который похож на ваш по воздействию. Типа Цель-Юнит, Цель-Точка или Цель-Объект.
Сергей4, высоту нельзя указать отрицательной.
Очевидно, точка-корень, которая отвечает за положение модели указана над землёй для этой анимации.
Тебе придётся редактировать модель. Это недолго.
Как вариант, раз вы не паузите юнита, он может заагриться на кого-то и проигрываемая вами анимация сбросится на анимацию атаки.
Он и правую кнопку в землю нажать может и всё сбросится.
Я уже решил проблему ускорением и новым таймером, хотя всё равно смотрится так себе, но работает.
Анимация вращения "как у акса" но была с названием "spell, slam" поэтому не мог её к вихрю прикрутить.
» WarCraft 3 / Звука смерти у юнита
» WarCraft 3 / Панель приказов
» WarCraft 3 / Preload Exploit
» WarCraft 3 / Модификации редактора
» WarCraft 3 / Инициализация карты
» WarCraft 3 / Триггер
» WarCraft 3 / Отмена способности
» WarCraft 3 / Зациклить музыку
» WarCraft 3 / Скрыть миникарту.
» WarCraft 3 / Приоритет по атаке
» WarCraft 3 / Спавн юнитов из области в другую область
» WarCraft 3 / Лагает из-за большой группы
» WarCraft 3 / Перенос имени на другую карту
» WarCraft 3 / Буфер обмена
» WarCraft 3 / Сломался редактор
» WarCraft 3 / Отследить удар рукой
» WarCraft 3 / Одинаковые предметы
» WarCraft 3 / 23 расы
» WarCraft 3 / Замена стандартной текстуры дерева
» WarCraft 3 / Оптимальна ли реализация?
» WarCraft 3 / Прозрачный интерфейс.
» WarCraft 3 / Действие с задержкой
» WarCraft 3 / Как заставить...
» WarCraft 3 / смена w3m на w3x
» WarCraft 3 / Видеоролики